基于策略的算法(2):TRPO, PPO
TRPO和PPO是两种基于策略的算法,它们的主要区别在于TRPO是基于约束的优化算法,而PPO是基于惩罚的优化算法。这两种算法都是在前面讲的策略梯度算法的基础上,通过一些技巧来提高算法的稳定性和收敛速度。
可以理解为REINFORCE-promax
on-policy转off-policy之重要性采样
我们前面说到Policy Gradient的on-policy方法(如REINFORCE)需依赖当前策略生成的数据更新策略,这样的算法让我们无法去完成寻找“某个区域内的优解”这样的行为(因为策略更新依赖于采样,采样依赖于策略,从而无法对策略进行多次探索之后再用采样更新,不支持跨策略重用)为了解决这个问题,我们可以引入一个onpolicy算法转化为offpolicy算法的数学工具,这个技术叫重要性采样(importance sampling)。但是在下面的PPO,TRPO之中,依然是on-policy的算法, 这里的重要性采样用于在采样之外探索更多的策略,采样重用从而提高效率,具体而言是暂时让“旧策略”去进行采样, 然后在“新策略”下计算这些数据的期望。
注意概念区分:on/offline与on/off policy
on/offline:offline是指采样和训练可以完全分开, 也就是说我们可以先采样一大堆数据, 然后再训练。而online则是指采样和训练同时进行, 也就是说我们每次采样一个数据, 就训练一次。
on/off policy:onpolicy是指我们在训练的时候, 采样的数据是由当前策略产生的。而offpolicy则是指我们在训练的时候, 采样的数据 是由另一个策略产生的。off-policy和offline算法虽然看起来好像差不多, 但实际上offline要控制的分布变化和大方差比offpolicy大很多, 需要专门的设计, 例如Q-learning之中直接学maxQ, 又或者结合重要性采样, 策略约束等多种手段
重要性采样的核心思想是,我们可以在一个策略下采样数据,然后在另一个策略下计算这些数据的期望。只需要补充一个权重因子。
在p1下采样一组数据
在p2下,只要乘以就可以让两个分布的期望相等
这个方法之所以很有用在于, 我们实际上并不能表达出p1, p2(他们是,神经网络), 但我们可以通过采样的方法来进行这个分布的转换
但需要注意的是方差很可能会变大,所以需要一些技巧来减小方差。这就引入了我们接下来的TRPO和PPO算法。
TRPO(Trust Region Policy Optimization)
先讲什么是Trust Region。 数学定义是, trust region 在内均接近目标, 就称为在的trust region。
我们的目标是减少策略迭代的方差, 让策略变化不要太大,那我们就可以在当前策略的附近找到一个trust region,在这次更新之中,我们只能在这个trust region内更新策略。这样就可以保证更新的策略不会变化太大,从而减小方差。也就是全局的Find 变为了在一个小范围内Find